After changes have been made to software source code, to improve the source code or fix a defect therein, the software source code is typically then tested to determine whether the code operates properly. Such tests may include executing the software source code or blocks thereof based on various input and determining or observing the resulting outputs generated by the tested source code. Since the same block of software source code may be executed in connection with multiple tasks, multiple tests are performed which simulate those tasks or verify adequate operation of the code for each task. Typically, no test should be omitted.
Those who write a given block of software source code are often not familiar with other software code blocks that interact with the given block of code. Thus, those writing software code may not know the interdepencies between various blocks and code, and, accordingly, may not know what blocks of code are affected by each test. Moreover, those administering a given software test may not know which codes are interact with each other when the test is carried out. As a result, neither those who write code nor those who test it may be able to determine a complete set of tests such that all software code blocks are tested after a given block of code is modified.
The identification of a given software source code change and the testing of software code are typically manual processes, and, therefore, may be prone to errors. For example, a particular test may be omitted or the wrong test may be performed. As a result, some defects or errors resulting from the software source code change may remain undetected, and the software source code may be unreliable with respect to certain tasks for which no corresponding test was performed.